﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Hydra.Shell.Attributes;
using Hydra.UrlMon.Enumerations;
using Hydra.UrlMon.Implementation;

namespace Hydra.UrlMon.Interfaces
{
    public interface IInternetBindInfo
    {
        /// <summary>
        /// This method gets the BINDINFO structure associated with the binding operation.
        /// </summary>
        /// <param name="grfBINDF">Address of a value taken from the BINDF enumeration indicating whether the bind should proceed synchronously or asynchronously.</param>
        /// <param name="pbindinfo">Address of the BINDINFO structure, which describes how the client wants the binding to occur.</param>
        void GetBindInfo(
             out BindFlags grfBINDF,
             ref BindInfo pbindinfo);

        /// <summary>Retrieves the strings needed by the protocol for its operation. </summary>
        /// <remarks>This method is used if the protocol requires any additional information, such as a user name or password needed to access a URL.</remarks>
        /// <param name="ulStringType">
        /// Integer value that indicates the type of string or strings that should be returned. This can be one of the BINDSTRING values.</param>
        /// <param name="ppwzStr">
        /// Address of an array of strings.</param>
        /// <param name="cEl">
        /// Integer value that indicates the number of elements in the array provided.</param>
        /// <param name="pcElFetched">
        /// Address of an integer value that indicates the number of elements in the array that are filled.</param>
        void GetBindString(
             BindString ulStringType,
             IntPtr ppwzStr,
             int cEl,
             ref int pcElFetched);
    }
}
